%% 
clear 
close all 
clc
%% Get DATA 

%[tabladatos , celltickers] = GetData_yahoo();% 274 tickers -- EUROPA
[tabladatos , celltickers] = GetData_yahoo2();%SP500
%load ('beforeFiltro.mat');
%% Filtrado armonico
tabladatos = FiltradoArmonico2(tabladatos);

numerofinal=sum(tabladatos(end,:)~=0);
AccionesElegir= find(tabladatos(end,:)~=0);
celltickers2=celltickers(AccionesElegir);
celltickers=celltickers2;
tabladatos = tabladatos(:,AccionesElegir);
fprintf('Se reduce a %i sistemas \n',numerofinal);%261
%% filtrado Fundamental
tabladatos = filtradoFundamental(tabladatos,celltickers);

numerofinal=sum(tabladatos(end,:)~=0);
AccionesElegir= find(tabladatos(end,:)~=0);
celltickers2=celltickers(AccionesElegir);
celltickers=celltickers2;
tabladatos = tabladatos(:,AccionesElegir);
fprintf('Se reduce a %i sistemas \n',numerofinal);%219
%% filtrado MCIM 

tabladatos = filtradoMCIM(tabladatos);

numerofinal=sum(tabladatos(end,:)~=0);
AccionesElegir= find(tabladatos(end,:)~=0);
celltickers2=celltickers(AccionesElegir);
celltickers=celltickers2;
tabladatos = tabladatos(:,AccionesElegir);
fprintf('Se reduce a %i sistemas \n',numerofinal);%153
clear celltickers2;
%% Algoritmo Memetico multifuncion
cartera = 10;
[ poblacion ] = Memeticofunction( tabladatos,cartera  );%sale ya limpia la poblacion


%% Filtro Genetico - Ratio Sharpe - Selecciona 4
[poblacionFiltrada,outputMejor] = filtradoGenetico(poblacion,tabladatos,celltickers);
%% Filtro Montecarlo - Ordena las 4
[poblacionFiltrada2, outputMejor] = filtradoMontecarlo(poblacionFiltrada,outputMejor);

%% Prediccion Linear - Garch
%Descartado por no ser uan serie muy aleatoria con media cero, no hay un
%patron
%GarchPrediction;%4,3
%% Prediccion no linear - NN Krill - Cogemos de los 4 el primero que da compra
[ poblacioprediccion, outputMejor] = KrillNNfunction( poblacionFiltrada2,outputMejor  );
%% Prepara archivo salida
[ poblacionout ,resultado] = FinalFile( poblacioprediccion,tabladatos,celltickers,cartera );
enviarEmail;
